
package cn.zlg.common.datadump.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import cn.zlg.common.datadump.condition.QueryCondtionDef;
import cn.zlg.common.datadump.processor.BaseExportEntityProcessor;
import cn.zlg.common.datadump.processor.ImportEntityProcessor;

@Target({ ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface DataDumpEntity {

    /**
     * 导出类型标识，必须唯一
     * 
     * @return
     */
    String name();

    Class entity();

    String idField() default "id";

    String batchDeleteField() default "deleteFlag";

    String deleteFlagValue() default "1";

    /**
     * 业务标识
     * 
     * @return
     */
    String businessName();

    /**
     * 动态数据业务类型
     * @return
     */
    String dynamicDataBizType() default "";

    /**
     * 动态数据绑定业务编号
     * @return
     */
    String dynamicDataBizCode() default "";

    /**
     * 支持的全部查询条件
     * 
     * @return
     */
    Class<? extends QueryCondtionDef> exportQueryConditions() default QueryCondtionDef.class;

    /**
     * 导入处理器
     */
    Class<? extends ImportEntityProcessor>[] importProcessors() default {};

    Class<? extends BaseExportEntityProcessor>[] exportProcessors() default {};
}
